import "../css/browser-table-print.css";
import printTable from "./printTable";
import printHtml from "./printHtml";

/**
 * html 打印方法
 * @param {*} param0
 *      param0.header: 页面的头部信息(每页都有打印, 高度按照内容自适应) 可传入函数或字符串
 *      param0.body: 页面的内容信息(除去header和footer的其余内容就是body) 可传入函数或字符串
 *      param0.footer: 页面的尾部信息(每页都有打印, 高度按照内容自适应)
 *      param0.bodyType: body的内容 html 或 table; 不传则根据是否是<table>开头</table>结尾来设置
 *      param0.htmlPrintCss: css文件路径 默认 'browser-table-print.css'
 *      param0.width: 纸张宽度
 *      param0.height: 纸张高度
 *      param0.padding: 纸张内边距
 *      param0.style: 自定义样式css字符串
 *      param0.overflowWidth 溢出宽高控制 多出空白页时可以适当调整此属性
 *      param0.overflowHeight 溢出宽高控制
 */
const init = function (options, callback) {
  let { body, bodyType } = options;
  const _options = {
    overflowWidth: 0,
    overflowHeight: 0,
    ...options,
  };
  // 判断内容类型
  if (!bodyType && typeof body === "string") {
    const content = body.trim().replace(/\r|\n|\r\n/g, "");
    bodyType = /^<table.*table>$/.test(content) ? "table" : "html";
  } else if (!bodyType) {
    bodyType = "html";
  }
  // 进入渲染分流逻辑
  if (bodyType === "table") {
    return printTable(_options, callback);
  } else if (bodyType === "html") {
    return printHtml(_options, callback);
  } else {
    alert("暂不支持此类型的打印");
  }
};

export { init };
